<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>promise.race</title>
</head>
<body>
  <script>
    /**
     * Promise。race方法同样是将多个promise实例，包装成一个新的promise实例
    */
  //  var p = Promise.race([p1, p2])
  // 上面代码中，只要p1,p2之中有一个实例率先改变状态，p状态就跟着改变。
  // 那个率先改变的Promise实例的返回值，就传递给p的回调函数
  // 如果参数不是promise实例会被转换为promise实例
  const p = Promise.race([
  fetch('/resource-that-may-take-a-while'),
  new Promise(function (resolve, reject) {
    setTimeout(() => reject(new Error('request timeout')), 5000)
  })
])
.then(console.log)
.catch(console.error);
// 上面代码中，如果 5 秒之内fetch方法无法返回结果，变量p的状态就会变为rejected，从而触发catch方法指定的回调函数。
  </script>
</body>
</html>